home *** CD-ROM | disk | FTP | other *** search
/ AmigActive 22 / AACD 22.iso / AACD / Online / Apache / include / php / Zend / zend_ini.h < prev    next >
Encoding:
C/C++ Source or Header  |  2000-11-02  |  8.0 KB  |  169 lines

  1. /*
  2.    +----------------------------------------------------------------------+
  3.    | Zend Engine                                                          |
  4.    +----------------------------------------------------------------------+
  5.    | Copyright (c) 1998-2000 Zend Technologies Ltd. (http://www.zend.com) |
  6.    +----------------------------------------------------------------------+
  7.    | This source file is subject to version 0.92 of the Zend license,     |
  8.    | that is bundled with this package in the file LICENSE, and is        |
  9.    | available at through the world-wide-web at                           |
  10.    | http://www.zend.com/license/0_92.txt.                                |
  11.    | If you did not receive a copy of the Zend license and are unable to  |
  12.    | obtain it through the world-wide-web, please send a note to          |
  13.    | license@zend.com so we can mail you a copy immediately.              |
  14.    +----------------------------------------------------------------------+
  15.    | Author: Zeev Suraski <zeev@zend.com>                                 |
  16.    +----------------------------------------------------------------------+
  17. */
  18.  
  19.  
  20. #ifndef ZEND_INI_H
  21. #define ZEND_INI_H
  22.  
  23. #define ZEND_INI_USER    (1<<0)
  24. #define ZEND_INI_PERDIR    (1<<1)
  25. #define ZEND_INI_SYSTEM    (1<<2)
  26.  
  27. #define ZEND_INI_ALL (ZEND_INI_USER|ZEND_INI_PERDIR|ZEND_INI_SYSTEM)
  28.  
  29. typedef struct _zend_ini_entry zend_ini_entry;
  30.  
  31. #define ZEND_INI_MH(name) int name(zend_ini_entry *entry, char *new_value, uint new_value_length, void *mh_arg1, void *mh_arg2, void *mh_arg3, int stage)
  32. #define ZEND_INI_DISP(name) void name(zend_ini_entry *ini_entry, int type)
  33.  
  34. struct _zend_ini_entry {
  35.     int module_number;
  36.     int modifyable;
  37.     char *name;
  38.     uint name_length;
  39.     ZEND_INI_MH((*on_modify));
  40.     void *mh_arg1;
  41.     void *mh_arg2;
  42.     void *mh_arg3;
  43.  
  44.     char *value;
  45.     uint value_length;
  46.  
  47.     char *orig_value;
  48.     uint orig_value_length;
  49.     int modified;
  50.  
  51.     void (*displayer)(zend_ini_entry *ini_entry, int type);
  52. };
  53.  
  54.  
  55. int zend_ini_mstartup(void);
  56. int zend_ini_mshutdown(void);
  57. int zend_ini_rshutdown(void);
  58.  
  59. void zend_ini_sort_entries(void);
  60.  
  61. ZEND_API int zend_register_ini_entries(zend_ini_entry *ini_entry, int module_number);
  62. ZEND_API void zend_unregister_ini_entries(int module_number);
  63. ZEND_API void zend_ini_refresh_caches(int stage);
  64. ZEND_API int zend_alter_ini_entry(char *name, uint name_length, char *new_value, uint new_value_length, int modify_type, int stage);
  65. ZEND_API int zend_restore_ini_entry(char *name, uint name_length, int stage);
  66. ZEND_API void display_ini_entries(zend_module_entry *module);
  67.  
  68. ZEND_API long zend_ini_long(char *name, uint name_length, int orig);
  69. ZEND_API double zend_ini_double(char *name, uint name_length, int orig);
  70. ZEND_API char *zend_ini_string(char *name, uint name_length, int orig);
  71. zend_ini_entry *get_ini_entry(char *name, uint name_length);
  72.  
  73. ZEND_API int zend_ini_register_displayer(char *name, uint name_length, void (*displayer)(zend_ini_entry *ini_entry, int type));
  74.  
  75. ZEND_API void zend_ini_apply_with_argument(apply_func_arg_t apply_func, void *arg);
  76.  
  77. ZEND_API ZEND_INI_DISP(zend_ini_boolean_displayer_cb);
  78. ZEND_API ZEND_INI_DISP(zend_ini_color_displayer_cb);
  79. ZEND_API ZEND_INI_DISP(display_link_numbers);
  80.  
  81. #define ZEND_INI_BEGIN()        static zend_ini_entry ini_entries[] = {
  82. #define ZEND_INI_END()        { 0, 0, NULL, 0, NULL, NULL, NULL, NULL, NULL, 0, NULL, 0, 0, NULL } };
  83.  
  84. #define ZEND_INI_ENTRY3_EX(name, default_value, modifyable, on_modify, arg1, arg2, arg3, displayer) \
  85.     { 0, modifyable, name, sizeof(name), on_modify, arg1, arg2, arg3, default_value, sizeof(default_value)-1, NULL, 0, 0, displayer },
  86.  
  87. #define ZEND_INI_ENTRY3(name, default_value, modifyable, on_modify, arg1, arg2, arg3) \
  88.     ZEND_INI_ENTRY3_EX(name, default_value, modifyable, on_modify, arg1, arg2, arg3, NULL)
  89.  
  90. #define ZEND_INI_ENTRY2_EX(name, default_value, modifyable, on_modify, arg1, arg2, displayer) \
  91.     ZEND_INI_ENTRY3_EX(name, default_value, modifyable, on_modify, arg1, arg2, NULL, displayer)
  92.  
  93. #define ZEND_INI_ENTRY2(name, default_value, modifyable, on_modify, arg1, arg2) \
  94.     ZEND_INI_ENTRY2_EX(name, default_value, modifyable, on_modify, arg1, arg2, NULL)
  95.  
  96. #define ZEND_INI_ENTRY1_EX(name, default_value, modifyable, on_modify, arg1, displayer) \
  97.     ZEND_INI_ENTRY3_EX(name, default_value, modifyable, on_modify, arg1, NULL, NULL, displayer)
  98.  
  99. #define ZEND_INI_ENTRY1(name, default_value, modifyable, on_modify, arg1) \
  100.     ZEND_INI_ENTRY1_EX(name, default_value, modifyable, on_modify, arg1, NULL)
  101.     
  102. #define ZEND_INI_ENTRY_EX(name, default_value, modifyable, on_modify, displayer) \
  103.     ZEND_INI_ENTRY3_EX(name, default_value, modifyable, on_modify, NULL, NULL, NULL, displayer)
  104.  
  105. #define ZEND_INI_ENTRY(name, default_value, modifyable, on_modify) \
  106.     ZEND_INI_ENTRY_EX(name, default_value, modifyable, on_modify, NULL)
  107.  
  108. #ifdef ZTS
  109. #define STD_ZEND_INI_ENTRY(name, default_value, modifyable, on_modify, property_name, struct_type, struct_ptr) \
  110.     ZEND_INI_ENTRY2(name, default_value, modifyable, on_modify, (void *) XtOffsetOf(struct_type, property_name), (void *) &struct_ptr##_id)
  111. #define STD_ZEND_INI_ENTRY_EX(name, default_value, modifyable, on_modify, property_name, struct_type, struct_ptr, displayer) \
  112.     ZEND_INI_ENTRY2_EX(name, default_value, modifyable, on_modify, (void *) XtOffsetOf(struct_type, property_name), (void *) &struct_ptr##_id, displayer)
  113. #define STD_ZEND_INI_BOOLEAN(name, default_value, modifyable, on_modify, property_name, struct_type, struct_ptr) \
  114.     ZEND_INI_ENTRY3_EX(name, default_value, modifyable, on_modify, (void *) XtOffsetOf(struct_type, property_name), (void *) &struct_ptr##_id, NULL, zend_ini_boolean_displayer_cb)
  115. #else
  116. #define STD_ZEND_INI_ENTRY(name, default_value, modifyable, on_modify, property_name, struct_type, struct_ptr) \
  117.     ZEND_INI_ENTRY2(name, default_value, modifyable, on_modify, (void *) XtOffsetOf(struct_type, property_name), (void *) &struct_ptr)
  118. #define STD_ZEND_INI_ENTRY_EX(name, default_value, modifyable, on_modify, property_name, struct_type, struct_ptr, displayer) \
  119.     ZEND_INI_ENTRY2_EX(name, default_value, modifyable, on_modify, (void *) XtOffsetOf(struct_type, property_name), (void *) &struct_ptr, displayer)
  120. #define STD_ZEND_INI_BOOLEAN(name, default_value, modifyable, on_modify, property_name, struct_type, struct_ptr) \
  121.     ZEND_INI_ENTRY3_EX(name, default_value, modifyable, on_modify, (void *) XtOffsetOf(struct_type, property_name), (void *) &struct_ptr, NULL, zend_ini_boolean_displayer_cb)
  122. #endif
  123.  
  124. #define INI_INT(name) zend_ini_long((name), sizeof(name), 0)
  125. #define INI_FLT(name) zend_ini_double((name), sizeof(name), 0)
  126. #define INI_STR(name) zend_ini_string((name), sizeof(name), 0)
  127. #define INI_BOOL(name) ((zend_bool) INI_INT(name))
  128.  
  129. #define INI_ORIG_INT(name)    zend_ini_long((name), sizeof(name), 1)
  130. #define INI_ORIG_FLT(name)    zend_ini_double((name), sizeof(name), 1)
  131. #define INI_ORIG_STR(name)    zend_ini_string((name), sizeof(name), 1)
  132. #define INI_ORIG_BOOL(name) ((zend_bool) INI_ORIG_INT(name))
  133.  
  134.  
  135. #define REGISTER_INI_ENTRIES() zend_register_ini_entries(ini_entries, module_number)
  136. #define UNREGISTER_INI_ENTRIES() zend_unregister_ini_entries(module_number)
  137. #define DISPLAY_INI_ENTRIES() display_ini_entries(zend_module)
  138.  
  139. #define REGISTER_INI_DISPLAYER(name, displayer) zend_ini_register_displayer((name), sizeof(name), displayer)
  140. #define REGISTER_INI_BOOLEAN(name) REGISTER_INI_DISPLAYER(name, zend_ini_boolean_displayer_cb)
  141.  
  142. zval *cfg_get_entry(char *name, uint name_length);
  143.  
  144.  
  145. /* Standard message handlers */
  146. ZEND_API ZEND_INI_MH(OnUpdateBool);
  147. ZEND_API ZEND_INI_MH(OnUpdateInt);
  148. ZEND_API ZEND_INI_MH(OnUpdateReal);
  149. ZEND_API ZEND_INI_MH(OnUpdateString);
  150. ZEND_API ZEND_INI_MH(OnUpdateStringUnempty);
  151.  
  152.  
  153. #define ZEND_INI_DISPLAY_ORIG    1
  154. #define ZEND_INI_DISPLAY_ACTIVE    2
  155.  
  156. #define ZEND_INI_STAGE_STARTUP        (1<<0)
  157. #define ZEND_INI_STAGE_SHUTDOWN        (1<<1)
  158. #define ZEND_INI_STAGE_ACTIVATE        (1<<2)
  159. #define ZEND_INI_STAGE_DEACTIVATE    (1<<3)
  160. #define ZEND_INI_STAGE_RUNTIME        (1<<4)
  161.  
  162. /* INI parsing engine */
  163. typedef void (*zend_ini_parser_cb_t)(zval *arg1, zval *arg2, int callback_type, void *arg);
  164. int zend_parse_ini_file(zend_file_handle *fh, zend_bool unbuffered_errors, zend_ini_parser_cb_t ini_parser_cb, void *arg);
  165. #define ZEND_INI_PARSER_ENTRY    1
  166. #define ZEND_INI_PARSER_SECTION    2
  167.  
  168. #endif /* ZEND_INI_H */
  169.